if (focus == NULL || !gtk_widget_is_ancestor (focus, GTK_WIDGET (popover)))
gtk_widget_grab_focus (GTK_WIDGET (popover));
- if (priv->grab_notify_blocked)
+ if (priv->grab_notify_blocked && priv->widget)
g_signal_handler_unblock (priv->widget, priv->grab_notify_id);
priv->grab_notify_blocked = FALSE;
{
GtkPopoverPrivate *priv = popover->priv;
GtkStateFlags old_state = 0;
- gboolean had_grab_notify_blocked = FALSE;
if (priv->widget == relative_to)
return;
if (g_signal_handler_is_connected (priv->widget, priv->state_changed_id))
g_signal_handler_disconnect (priv->widget, priv->state_changed_id);
if (g_signal_handler_is_connected (priv->widget, priv->grab_notify_id))
- {
- if (priv->grab_notify_blocked)
- {
- priv->grab_notify_blocked = FALSE;
- had_grab_notify_blocked = TRUE;
- }
- g_signal_handler_disconnect (priv->widget, priv->grab_notify_id);
- }
+ g_signal_handler_disconnect (priv->widget, priv->grab_notify_id);
widget_unmanage_popover (priv->widget, popover);
}
g_signal_connect (priv->widget, "grab-notify",
G_CALLBACK (_gtk_popover_parent_grab_notify),
popover);
- if (had_grab_notify_blocked)
- {
- g_signal_handler_block (priv->widget, priv->grab_notify_id);
- priv->grab_notify_blocked = TRUE;
- }
+ if (priv->grab_notify_blocked)
+ g_signal_handler_block (priv->widget, priv->grab_notify_id);
/* Give ownership of the popover to widget */
widget_manage_popover (priv->widget, popover);